草庐IT

c++ - Qt Release build 给出 MSVC++ Runtime Library Error

全部标签

c++ - 为什么 MSVC 10.0 编译器经常忽略 inline 关键字?

我有一些非常复杂的c++代码,用于实时系统,因此对速度绝对敏感。它是在Linux上开发的,为了加快它的速度,许多函数都标有“内联”关键字,并移至头文件中以允许内联。现在我将此代码移植到Windows(msvc10.0、Windows7),它的运行速度大约慢了30%。在做了一些分析之后,我发现问题基本上是很多函数没有内联。当我改用“__forceinline”时,我很容易看到速度提高了10-20%。有人对此有解释吗?仅仅是因为msvc中的算法更加保守吗?还是我只是做错了什么,比如缺少配置选项? 最佳答案 您需要检查您的MSVC优化设置

c++ - 默认复制构造函数和复制赋值赋值运算符给出奇怪的错误

我已经默认了我的复制构造函数和复制赋值运算符如下:Config(constConfig&config)=default;Config&operator=(constConfig&rhs)=default;然后通过友元将这些功能授予独立功能。创建配置对象的拷贝后,我收到以下警告和注释(?):./cfg/config.hpp:129:3:warning:unusedparameter'config'[-Wunused-parameter]cfg/get.cpp:Infunction'constcfg::Config&cfg::Get(bool)':cfg/get.cpp:34:30:not

c++ - 为什么 boost 的随机数生成(正态分布)总是给出相同的值?

我正在生成一些随机数并出现可疑行为。这是我的代码://initializedearlier...intheconstructorofaclassboost::mt19937*rng=newboost::mt19937();rng->seed(time(NULL));//actualusehere.for(inti=0;idistribution(10,10);boost::variate_generator>resampler(*rng,distribution);constdoublesample=(resampler)();//alwaysthesamevalue.}我是否滥用了b

c++ - 在 C 中,将函数指针赋值给适当类型的变量给出 "cannot convert ... in assignment"

采用以下C/C++代码:#includeintinc(inti){returni+1;}//int→int,likeabs()//bazisbool→(int→int)int(*baz(boolb))(int){returnb?&abs:&inc;}intmain(){int(*foo(bool))(int);//foois&(bool→(int→int))foo=baz;}尝试编译这个(gcc或g++)给出:$g++test.cctest.cc:Infunction‘intmain()’:test.cc:9:error:assignmentoffunction‘int(*foo(bo

c++ - 如何将模板中具有非依赖名称的 msvc++ 代码移植到 Linux?

我可以处理移植平台相关的功能。我有一个问题,我在Linux上试过的编译器(clang和g++)不接受以下代码,而msvc++编译器接受:templateclassBase{protected:TValue;};templateclassDerived:publicBase{public:voidsetValue(constT&inValue){Value=inValue;}};intmain(intargc,charconst*argv[]){Derivedtmp;tmp.setValue(0);return0;}g++错误:main.cpp:Inmemberfunction‘void

c++ - 带有 unsigned char 的 for 循环给出了意想不到的行为

我正在练习面试问题,但很难回答这个基本问题:Howmanytimeswillthisloopexecute?unsignedcharhalf_limit=150;for(unsignedchari=0;i我的想法是,由于unsignedint仅达到255,它将永远执行,因为当我在unsignedchar为255时增加它时它会恢复为0?然而,这种想法是错误的,更奇怪的是,这是cout给我的输出:!"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������

c++ - 为什么这个 C++ 代码没有给出编译错误?

#includeusingnamespacestd;structa{inte;structabc*d;};structabc{intc;};intmain(){return0;}我在定义structa之后定义了structabc,其中我为abc声明了一个结构指针。这应该会引发编译错误,因为abc在其声明之前使用。但是,它没有,为什么?而当我用structabcd而不是structabc*d替换它时,它会按预期给出编译错误。 最佳答案 这个声明structabc*d;一方面声明structabc,另一方面声明structabc*类型的

c++ - 这是 MSVC++ 2017 更新 3 中的编译器错误吗

#includestd::vector::iteratorfoo();voidbar(void*){}intmain(){void*p;while(foo()!=foo()&&(p=0,true)){bar(p);}return0;}错误结果:c:\users\jessepepper\source\repos\testcode\consoleapplication1\consoleapplication1.cpp(15):errorC4703:potentiallyuninitializedlocalpointervariable'p'used 最佳答案

c++ - 是否存在 fseek/ftell 给出错误文件大小的情况?

在C或C++中,以下可用于返回文件大小:constunsignedlonglongat_beg=(unsignedlonglong)ftell(filePtr);fseek(filePtr,0,SEEK_END);constunsignedlonglongat_end=(unsignedlonglong)ftell(filePtr);constunsignedlonglonglength_in_bytes=at_end-at_beg;fprintf(stdout,"filesize:%llu\n",length_in_bytes);是否有开发环境、编译器或操作系统可以根据填充或其他特定

C++ Sizeof 给出不可预测的结果

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whydoes‘sizeof’givewrongmeasurement?我有一个名为CBUFFER_PEROBJECT的结构:structCBUFFER_PEROBJECT{D3DXMATRIXFinal;D3DXMATRIXRotation;};在另一个类里面我这样做:...bd.ByteWidth=sizeof(CBUFFER_PEROBJECT);...我发现D3DXMATRIX的大小是64,所以64+64=128(对吗?)。但是我的编译器在耍我(VisualC++),因为当我调试程序时,bd.Byte